package com.atguigu.bigdata.scala.chapter01

/*
 1. object : 对象
    声明一个Scala中的对象，这个对象是单例的。
    但是也同时声明了对象的类，只不过这个类比较特殊,类名为：对象名+$ => Scala02_HelloWorld$

 2. Scala02_HelloWorld
    声明单例对象的名称

    IDEA中src/main/java称之为源码目录
    maven项目会将源码目录中程序代码编译后的字节码文件放置在target目录中
    IDEA中 target/classes目录称之为classpath(类的存放路径)

 3. def
    在scala语言中，def关键字用于声明方法（函数）

 4. main
    声明的方法（函数）名, 也是scala程序的入口方法

 5. (args: Array[String])
    方法的参数列表
    args: Array[String] 是参数列表的一个参数，多个参数应该使用逗号隔开

    参数的声明：

    java  => 参数类型 参数名称 => String name
                Java代码中强调变量，参数的类型，所以类型放在声明的前面，一目了然
                String name = "zhangsan"

    scala => 参数名称:参数类型 => name : String
                马丁想：开发程序时，变量，参数的名称更重要，所以名称放置在前面是一个不错的选择
                name : String

 6. Array[String]
    类似于java中：String[] => 字符串数组
    Scala语言是基于java语言开发的，但是java语言不是完全面向对象的语言。
    马丁希望创建一门完全面向对象的语言，Scala就是，java中的数组在scala中也有专门的类，就是Array
    [String]表示泛型，String表示字符串

 7. Unit
    java  => 方法返回值类型 方法名
    scala => 方法名 : 方法返回值类型

    Unit表示的含义和java中的void相同，Unit表示没有返回值

 8. System.out.println
    java代码可以在scala的程序中直接使用

 9. println
    scala中特殊的方法，不用声明，即可使用
    scala帮我们将方法进行声明和引入。

    一行语句中最后的分号在scala中可以省略掉的

    java中使用分号表示逻辑的结束，所以必须使用。

    马丁想：一行代码不就是一行逻辑，完全可将使用换行符号作为逻辑的结束，所以分号就可以省略

    scala如果一行代码中有多个逻辑，那么每个逻辑之间的分号不能省略

 10. = : 赋值
    Java :
    变量类型 变量名称 = 变量值
    void test() {
        //方法体
    }

    User user = new User()

    scala中的方法的实现使用等号赋值
    def test():Unit = {
        //方法体
    }


 */
object Scala02_HelloWorld {

    def main(args: Array[String]): Unit = {

        System.out.println("Hello World")
        println("Hello Scala")

        Scala03_Test.test()
    }
}
